#!/bin/bash

# 前端构建脚本 - 内存优化版本
# 使用方法: ./build-with-memory-optimization.sh

set -e

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

echo -e "${BLUE}=== 前端构建脚本 - 内存优化版本 ===${NC}"

# 检查是否在正确的目录
if [ ! -f "package.json" ]; then
    echo -e "${RED}错误：请在 frontend 目录下运行此脚本${NC}"
    exit 1
fi

# 检查 Node.js 版本
NODE_VERSION=$(node --version)
echo -e "${GREEN}Node.js 版本: ${NODE_VERSION}${NC}"

# 检查可用内存
if command -v free >/dev/null 2>&1; then
    MEMORY_INFO=$(free -h | grep Mem)
    echo -e "${GREEN}系统内存信息: ${MEMORY_INFO}${NC}"
fi

# 清理之前的构建缓存
echo -e "${YELLOW}清理构建缓存...${NC}"
rm -rf .next
rm -rf .swc

# 设置环境变量
export NODE_OPTIONS="--max-old-space-size=8192"
export NEXT_TELEMETRY_DISABLED=1

echo -e "${GREEN}设置 NODE_OPTIONS: ${NODE_OPTIONS}${NC}"

# 检查依赖是否完整
if [ ! -d "node_modules" ]; then
    echo -e "${YELLOW}依赖未安装，正在安装...${NC}"
    pnpm install
fi

# 尝试构建
echo -e "${GREEN}开始构建前端项目...${NC}"
echo -e "${YELLOW}注意：构建过程可能需要较长时间，请耐心等待...${NC}"

# 使用 pnpm 构建
if pnpm run build; then
    echo -e "${GREEN}✅ 前端构建成功！${NC}"
    
    # 显示构建结果
    if [ -d ".next" ]; then
        BUILD_SIZE=$(du -sh .next 2>/dev/null | cut -f1 || echo "未知")
        echo -e "${GREEN}构建输出大小: ${BUILD_SIZE}${NC}"
    fi
    
    echo -e "${GREEN}构建完成，可以启动项目了！${NC}"
else
    echo -e "${RED}❌ 前端构建失败！${NC}"
    echo -e "${YELLOW}可能的原因和解决方案：${NC}"
    echo -e "${YELLOW}1. 内存不足：${NC}"
    echo -e "   - 增加服务器内存"
    echo -e "   - 关闭其他不必要的进程"
    echo -e "   - 使用 swap 分区"
    
    echo -e "${YELLOW}2. 依赖问题：${NC}"
    echo -e "   - 删除 node_modules 重新安装：rm -rf node_modules && pnpm install"
    echo -e "   - 清除 pnpm 缓存：pnpm store prune"
    
    echo -e "${YELLOW}3. 环境变量问题：${NC}"
    echo -e "   - 检查 .env 和 .env.production 文件"
    echo -e "   - 确保所有必要的环境变量都已设置"
    
    echo -e "${YELLOW}4. 网络问题：${NC}"
    echo -e "   - 检查网络连接"
    echo -e "   - 配置 npm/pnpm 镜像源"
    
    exit 1
fi
